package Repositorios;


import ClassesBases.Conta;
import Interfaces.InterfaceRepositorioConta;

public class RepositorioContasArray implements InterfaceRepositorioConta {
	private Conta[] contas;
	private int indice;
	private final static int tamCache = 100;
	private Conta conta;

	public RepositorioContasArray(){
		contas = new Conta[tamCache];
		this.indice = 0;
	}
	
	@Override
	public void inserir(Conta c) {
		this.conta = procurar(c.getNumero());
				if(this.conta == null){
					this.conta = c;
				}

	}

	@Override
	public boolean existe(String num) {
		this.conta = procurar(num);
		if(this.conta != null){
			return true;
		}
		return false;
	}

	@Override
	public void atualizar(Conta c) {
		this.conta = procurar(c.getNumero());
		if(this.conta !=null){
			this.conta = c;
		}
		

	}

	@Override
	public Conta procurar(String num) {
		for (Conta conta : contas) {
			if (conta.getNumero().equals(num)) {
				return conta;
			}
		}
		return null;
	}

	@Override
	public void remover(String num) {
		this.conta = procurar(num);
		if (this.conta != null) {
			int iTemp = acharIndice(this.conta);
			while ((contas[iTemp+1]) != null) {
				contas[iTemp] = contas [iTemp+1];
				iTemp++;
			}
			contas[iTemp] = null;
			this.indice--;
		}
	}
	
	public int acharIndice (Conta c){
		for (int i = 0; i < contas.length; i++) {
			if (c.equals(contas[i])) {
				return i;
			}
		}
		return -1;
	}

}
